package com.crcode.crm.service.data;

import java.util.List;
import java.util.Map;

import com.crcode.crm.bean.data.EnterpriseBean;
import com.crcode.crm.bean.user.UserBean;
import com.crcode.crm.service.CommonService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultPageUtil;
import com.crcode.crm.utils.ResultUtil;

public interface EnterpriseService extends CommonService<EnterpriseBean, Integer> {

    /**
     * 根据UUID查询
     * @param uuid uuid
     * @return EnterpriseBean
     */
    EnterpriseBean findByUuid(String uuid);

    /**
     * 根据序号单一、批量删除返回操作结果数
     * @param ids id数组
     * @return long
     */
    boolean deleteByIdIn(List<Integer> ids, List<String> uuidList, UserBean user);

    /**
     * 根据名称查询
     * @param name
     * @return
     */
    List<EnterpriseBean> findByEntName(String name);
    
    /**
     * 根据名称等于，uuid不等于查询
     * @author lxw
     * @date 2019年4月12日
     * @param name
     * @param uuid
     * @return
     */
    List<EnterpriseBean> findByEntNameAndUuidNot(String name,String uuid);

    /**
     * 列表页搜索和排序
     * @param search 搜索内容
     * @param vo 排序和页码
     * @return
     */
    ResultPageUtil findByEntNameContaining(String search, PageVo vo);
    
    /**
     * 根据UUIDS设置可见权限
     * @author lxw
     * @param uuids 资源UUIDS
	 * @param suuid 查看权限用户UUIDS
	 * @param sname查看权限用户名称集
	 * @param euuid编辑 权限用户UUIDS
	 * @param ename编辑权限用户名称集
	 * @param user 当前操作用户
     * @return
     */
    boolean empowerByIds(String uuids,String suuid,String sname,String euuid,String ename,UserBean user);

    /**
     * 根据多个id获取多个企业
     * @param ids 企业的id
     * @return List<EnterpriseBean>
     */
    List<EnterpriseBean> findByIdIn(List<Integer> ids);

    /**
     * 根据用户/创建时间统计企业数量,按天统计
     * @return List<Map<String, Object>>
     */
    List<Map<String, Object>> aggsEntByUserCreateTime(String uuid);
    
    /**
	 * 设置项目的启动或者终止
	 * @author lxw
	 * @date 2019年4月19日
	 * @param isEnd 0、正常，1、终止
	 * @param uuids
	 * @return
	 */
	public ResultUtil setEntStartOrEnd(UserBean user,Integer isEnd, String uuids);
	/**
	 * 重置负责人
	 * @author lxw
	 * @date 2019年4月26日
	 * @param user 操作者
	 * @param uuids 资源UUIDS
	 * @param userUuid 用户序号
	 * @param userName 用户名称
	 * @return
	 */
	public ResultUtil resetLiableUserByUuids(UserBean user,String uuids,String userUuid,String userName);
}
